package com.starry.module.system.core.file.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.starry.core.common.domain.vo.PageVo;
import com.starry.module.system.api.file.domain.qo.SysFilePageQo;
import com.starry.module.system.api.file.domain.qo.SysFileQo;
import com.starry.module.system.api.file.domain.vo.SysFileVo;
import com.starry.module.system.core.file.entity.SysFile;
import com.starry.module.system.core.file.mapper.SysFileMapper;
import com.starry.module.system.core.file.service.SysFileService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Set;

/**
 * 文件信息-服务实现
 * @author xiaoke
 */
@Service("sysFileService")
public class SysFileServiceImpl implements SysFileService {

    private final SysFileMapper sysFileMapper;

    public SysFileServiceImpl(SysFileMapper sysFileMapper) {
        this.sysFileMapper = sysFileMapper;
    }

    @Override
    public PageVo<SysFileVo> page(SysFilePageQo pageQo) {
        return sysFileMapper.selectPage(pageQo);
    }

    @Override
    public SysFile get(Long configId, String fileName) {
        return sysFileMapper.selectByFile(configId, fileName);
    }

    @Transactional
    @Override
    public Long save(SysFileQo sysFileQo) {
        SysFile sysFile = BeanUtil.toBean(sysFileQo, SysFile.class);
        sysFile.setId(null);
        sysFileMapper.insert(sysFile);
        return sysFile.getId();
    }

    @Transactional
    @Override
    public void removeByIds(Set<Long> idList) {
        if (idList.isEmpty()) return;
        sysFileMapper.deleteByIds(idList);
    }
}

